/* 
  登录说明：
    1.收集表单项数据
    2.前端验证
      1) 验证用户信息是否合法（账号，密码的格式）
      2）前端验证不同过，就提示用户内容不合法，不需要发请求进行后端验证
      3）前端验证通过，发请求（账号，密码）进行后端验证
    3.后端验证
      1）验证当前用户是否存在
      2）如果用户不存在，直接返回登陆失败（该用户不存在）
      3）该用户存在，需要验证密码是否正确
      4）密码不正确，返回给前端，并提示密码不正确
      5）密码正确，返回登陆成功数据
*/
import request from '../../utils/request.js'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    phone:'', //用户账号
    password:'', //用户密码
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  // 表单项事件的回调
  handleInput(event){
    console.log(event)
    let type=event.currentTarget.id //根据表单定义的id情况，id只有两种情况phone或者password 适合传唯一值
    // let type=event.currentTarget.dataset.type  data-key=value 适合传多个值
    console.log(type)
    // 更新数据
    this.setData({
      [type]:event.detail.value //根据点击的表单更新表单里面对应的数据,type应该是变量，所以应该用[]
    })
  },

  // 登录的回调
  async login(){
    // 1.收集表单项数据
    let {phone,password}=this.data

    // 前端验证
    /* 
      1.内容为空
      2.手机号格式不正确
      3.手机号格式正确，验证通过
    */
   if (!phone) {
     wx.showToast({
       title: '手机号不能为空',
       icon:"error",
     })
     return
   }

  //  定义正则表达式（^代表开头第一位数字1，第二位3-9任意数字，后面九位任意数字 /d代表数字{9}代表九位 $代表以什么结尾）
  let phoneReg=/^1(3|4|5|6|7|8|9)\d{9}$/
  if (!phoneReg.test(phone)) {//进入代表手机号格式不正确
    // 提示用户
    wx.showToast({
      title: '手机号格式错误',
      icon:'error'
    })
    return
  }

  // 验证密码
  if (!password) {
    wx.showToast({
      title: '密码不能为空',
      icon:"error",
    })
    return
  }

  // 后端验证
  let result=await request('/login/cellphone',{phone,password,isLogin:true})
  // 200 400 502
  if (result.code===200) {
    // 登录成功
    wx.showToast({
      title: '登录成功',
    })
    // 将用户信息存入本地
    wx.setStorageSync('userInfo', result.profile)

    // 跳转至个人中心页
    wx.reLaunch({
      url: '/pages/personal/personal',
    })

  }else if(result.code===400){
    wx.showToast({
      title: '手机号错误',
      icon:'error'
    })
  }else if(result.code===502){
    wx.showToast({
      title: '密码错误',
      icon:'error'
    })
  }else{
    wx.showToast({
      title: '登陆失败请重试',
      icon:'error'
    })
  }
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})